package net.pimpas.report.processor.projection.factory;

import net.pimpas.report.processor.field.Field;
import net.pimpas.report.processor.projection.impl.CountProjection;
import net.pimpas.report.processor.projection.impl.GroupProjection;
import net.pimpas.report.processor.projection.impl.MaxProjection;
import net.pimpas.report.processor.projection.impl.MinProjection;
import net.pimpas.report.processor.projection.impl.PropertyProjection;
import net.pimpas.report.processor.projection.impl.RowCountProjection;
import net.pimpas.report.processor.projection.impl.SumProjection;

public abstract class ProjectionFactory {
	
	public static CountProjection createCountProjection(Field field) {
		return new CountProjection(field);
	}
	
	public static GroupProjection createGroupProjection(Field field) {
		return new GroupProjection(field);
	}
	
	public static MaxProjection createMaxProjection(Field field) {
		return new MaxProjection(field);
	}
	
	public static MinProjection createMinProjection(Field field) {
		return new MinProjection(field);
	}
	
	public static PropertyProjection createPropertyProjection(Field field) {
		return new PropertyProjection(field);
	}
	
	public static RowCountProjection createRowCountProjection() {
		return new RowCountProjection();
	}
	
	public static SumProjection createSumProjection(Field field) {
		return new SumProjection(field);
	}
}